package com.smart.community.region.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.smart.community.commons.base.BaseEntity;
import com.smart.community.commons.enums.SystemStatusEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 物业公司建筑类型实体类
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sc_property_company_building_type")
public class PropertyCompanyBuildingType extends BaseEntity {
    /**
	 * @author Wu.Liang
	 * @date 2025年8月19日
	 */
	private static final long serialVersionUID = -5305632700444563251L;

	/**
     * 物业公司ID（可选，NULL表示平台公共建筑类型）
     */
    @TableField("property_company_id")
    private Long propertyCompanyId;

    /**
     * 建筑类型名称
     */
    @TableField("building_type_name")
    private String buildingTypeName;

    /**
     * 建筑类型编码
     */
    @TableField("building_type_code")
    private String buildingTypeCode;

    /**
     * 分类ID列表（JSON字符串）
     */
    @TableField("category_ids")
    private String categoryIds;

    /**
     * 描述
     */
    @TableField("description")
    private String description;

    /**
     * 排序
     */
    @TableField("sort_order")
    private Integer sortOrder;

    /**
     * 状态：0-禁用，1-启用
     */
    @TableField("status")
    private Integer status;

    /**
     * 检查是否启用
     */
    @JsonIgnore
    public boolean isEnabled() {
        return SystemStatusEnum.ENABLED.getCode().equals(status);
    }

    /**
     * 检查是否有分类关联
     */
    @JsonIgnore
    public boolean hasCategories() {
        return categoryIds != null && !categoryIds.trim().isEmpty();
    }

    /**
     * 检查是否为有效状态
     */
    @JsonIgnore
    public boolean isValidStatus() {
        return SystemStatusEnum.ENABLED.getCode().equals(status) || 
               SystemStatusEnum.DISABLED.getCode().equals(status);
    }
}
